﻿using System.Collections.Generic;
using EnetaMvc.ApplicationServices.Dto;
using EnetaMvc.Infrastructure;
using EnetaMvc.Core.Domain.Content;
using EnetaMvc.Core.Domain.SLA;

namespace EnetaMvc.ApplicationServices
{
    public interface IContentService
    {
        HtmlAreaDto GetHtmlAreaByName(string name);
        TooltipDto GetTooltipByName(string name);
        IList<PublishStateDto> ListPublishStates();
        void SaveComment(CommentDto comment);
        bool IsUserContentOwner(string userToken, long contentItemId);
        
        IList<TagDto> ListTags();
        void SaveTag(TagDto tagDto);
        void DeleteTag(long id);
        bool IsTagUsed(long id);

        IList<TagGroupDto> ListTagGroups();
        void SaveTagGroup(TagGroupDto tagGroup);
        void DeleteTagGroup(long tagGroupId);
        bool HasTags(long tagGroupId);

        PagedResult<SlaMonitoringLogDto> ListSlaMonitoringLogs(int page, int pageSize);
        void SaveBlogSlaitoringLog(long blogId, long newPublishStateId, long userId);
        void SaveContentItemSlagLog(long contentItemId, long newPublishStateId, long userId);

        IList<DynamicMenuDto> ListDynamicMenus();
        void SaveDynamicMenu(DynamicMenuDto dynamicMenuDto);
        void DeleteDynamicMenu(long id);
        DynamicMenuDto GetDynamicMenu(long id);

        IList<HtmlControlDto> ListHtmlControls();
        IList<HtmlControlDto> ListVisibleHtmlControls();
        void SaveHtmlControl(HtmlControlDto htmlControl);
        void DeleteHtmlControl(long id);
        HtmlControlDto GetHtmlControl(long id);
    } 
}
